import React from "react"

export default class SetState1 extends React.PureComponent<any, any> {
  constructor(props: any) {
    super(props)
    this.state = {
      index: 0
    }
  }

  componentWillUpdate() {
    console.log('setState1 componentWillUpdate')
  }

  componentDidUpdate() {
    console.log('setState1 componentDidUpdate')
  }

  componentDidMount() {
    // // 异步函数
    // setTimeout(() => {
    //   console.log('setState1_1 SetState调用setState')
    
    //   this.setState({index:this.state.index +1})
  
    //   console.log('setState1_2 state',this.state.index);
  
    //   console.log('setState1_3 SetState调用setState');
  
    //   this.setState({index:this.state.index +1})
  
    //   console.log('setState1_4 state',this.state.index);
    // }, 1000)
    // // parent componentDidMount
    // // setState1_1 SetState调用setState
    // // setState1 componentWillUpdate
    // // setState1 componentDidUpdate
    // // setState1_2 state 1
    // // setState1_3 SetState调用setState
    // // setState1 componentWillUpdate
    // // setState1 componentDidUpdate
    // // setState1_4 state 2

    // this.setState({
    //   index: this.state.index + 1
    // }, () => {
    //   console.log('第一个打印index：', this.state.index)
    // })

    // this.setState({
    //   index: this.state.index + 1
    // }, () => {
    //   console.log('第二个打印index：', this.state.index)
    // })

    // 1
    // 1

    this.setState((preState: any) => ({ index: preState.index + 1 }), () => {
      console.log(this.state.index);
    })
    this.setState((preState: any) => ({ index: preState.index + 1 }), () => {
      console.log(this.state.index);
    })

    // 2
    // 2
    
  }

  render() {
    return (
      <div>setState1</div>
    )
  }
  
}